package com.jiangyao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jiangyao.common.exception.ServerException;
import com.jiangyao.model.dto.OrgInfoDto;
import com.jiangyao.model.dto.backend.OrgInfoDTO;
import com.jiangyao.model.dto.backend.OrgInfoListPageDTO;
import com.jiangyao.model.dto.backend.OrgInfoSearchDTO;
import com.jiangyao.model.entity.OrgInfo;
import com.jiangyao.model.vo.backend.OrgInfoListVO;
import com.jiangyao.model.vo.backend.OrgInfoVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 组织信息 服务类
 * </p>
 *
 * @author xiangyan
 * @since 2020-08-12
 */
public interface OrgInfoService extends IService<OrgInfo> {
	List<OrgInfo> getList(OrgInfoDto orgInfoDto);

	List<OrgInfo> getSessionUserOrg();

	OrgInfo getOrgDetail(Integer orgId);

	/**
	 * 获取组织列表
	 *
	 * @param orgInfoListPageDTO 列表DTO
	 * @return 结果
	 */
	Page<OrgInfoListVO> getListPage(OrgInfoListPageDTO orgInfoListPageDTO);

	/**
	 * 增加组织
	 *
	 * @param orgInfoDTO 增加DTO
	 */
	void add(OrgInfoDTO orgInfoDTO);

	/**
	 * 编辑组织
	 *
	 * @param orgInfoDTO 编辑DTO
	 */
	void edit(OrgInfoDTO orgInfoDTO);

	/**
	 * 编辑组织状态（启用、禁用）
	 *
	 * @param orgInfoDTO 编辑DTO
	 */
	void editStatus(OrgInfoDTO orgInfoDTO);

	/**
	 * 获取组织详情
	 *
	 * @param orgInfoDTO 请求参数
	 * @return 结果
	 */
	OrgInfoVO getDetail(OrgInfoDTO orgInfoDTO);

	/**
	 * 导出组织
	 *
	 * @param response           response
	 * @param orgInfoListPageDTO 列表请求DTO
	 */
	void export(HttpServletResponse response, OrgInfoListPageDTO orgInfoListPageDTO);

	/**
	 * 根据名称检索组织（最多返回50）,用于新建班级选择组织等
	 *
	 * @param searchDTO 检索DTO
	 * @return 结果
	 */
	List<OrgInfo> searchForSelect(OrgInfoSearchDTO searchDTO);

    List<OrgInfo> getAdminOrgList() throws ServerException;
}
